package com.qf.dao;

import com.qf.pojo.Order;
import com.qf.pojo.OrderItem;

import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;

/**
 * @author 高圆圆
 * @date 2023/6/6 17:38
 * 订单数据访问接口
 */
public interface OrderDao {

    /**
     * 添加订单数据
     * @param order 订单实体
     */
    void insertOrder(Order order) throws SQLException;

    /**
     * 添加订单项数据
     * @param orderItem 订单项实体
     */
    void insertOrderItem(OrderItem orderItem) throws SQLException;

    /**
     * 查找订单的总计数
     * @param uid  条件就是用户uid
     * @return 返回总条数
     */
    int getTotalCount(String uid) throws SQLException;

    /**
     * 查询订单分页数据
     * @param uid 用户uid
     * @param currentPage 当前页码
     * @param pageSize   每页显示的条数
     * @return  返回订单列表数据(包含订单项的数据---包含商品数据)
     */
    List<Order> selectOrderByPage(String uid, int currentPage, int pageSize) throws SQLException, InvocationTargetException, IllegalAccessException;

    /**
     * 订单数据访问接口查询订单实体
     * @param oid 订单编号
     * @return 返回订单实体
     */
    Order selectOrderByOid(String oid) throws SQLException;

    /**
     * 订单数据访问接口 更新订单
     * @param order 订单实体
     */
    void update(Order order) throws SQLException;
}
